<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    
</body>
<script type="text/javascript">

    // 独立的对象建两个 一个xiaoli，一个xiaowang，让小李和小王通过门铃进行通信，如果有门直接通信，如果没有，先创建一个门，然后在进行通信。
    var xiaowang = (function (argument) {
        var xiaowangjia = function (message) { // 小王家创建门铃
            this.menling = message
        }
        var men
        var info = {
            sendMessage:function(message) { // 小王家门铃的功能
                if(!men) { // 如果小王家没有门
                    men = new xiaowangjia(message) // 小王家创建一个门
                }
                return men // 如果小王家有门，就把门暴露出去
            }
        }
        return info // 把门的接口暴露到外面，以供通信
    })()

    var xiaoli = {
        callXiaowang: function (msg) { // 小李去按小王家的门铃进行通信
            var _xw = xiaowang.sendMessage(msg) // 向小王通信
            alert(_xw.menling)
            _xw = null // 等待垃圾回收
        }
    }

    xiaoli.callXiaowang('didi')
</script>
</html>